package foot.modele;

import java.util.Collection;
import java.util.HashSet;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
/**
 * mise en forme de la table 2quipe, avec un nom, un id automatique, et une colleciton de joueurs
 * validée par rapport au modele
 * @author alexandre
 *
 */
public class Equipe {
	private int id;
	private String nomEquipe;
	private Collection<Joueur> lesJoueurs;
	private int numEquipeTournoi;
	
	public Equipe(){
		lesJoueurs = new HashSet<Joueur>();
	}
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNomEquipe() {
		return nomEquipe;
	}
	public void setNomEquipe(String nomEquipe) {
		this.nomEquipe = nomEquipe;
	}
	
	@OneToMany(mappedBy = "equipe", fetch=FetchType.EAGER,cascade={CascadeType.ALL})
	public Collection<Joueur> getLesJoueurs() {
		return lesJoueurs;
	}
	public void setLesJoueurs(Collection<Joueur> lesJoueurs) {
		this.lesJoueurs = lesJoueurs;
	}
	@Override
	public int hashCode() {
		return id;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Equipe other = (Equipe) obj;
		if (id != other.id)
			return false;
		if (lesJoueurs == null) {
			if (other.lesJoueurs != null)
				return false;
		} else if (!lesJoueurs.equals(other.lesJoueurs))
			return false;
		if (nomEquipe == null) {
			if (other.nomEquipe != null)
				return false;
		} else if (!nomEquipe.equals(other.nomEquipe))
			return false;
		return true;
	}

	public int getNumEquipeTournoi() {
		return numEquipeTournoi;
	}

	public void setNumEquipeTournoi(int numEquipeTournoi) {
		this.numEquipeTournoi = numEquipeTournoi;
	}
}
